		/**
		 * ��tree��combobox
		 */
		Ext.form.ComboBoxTree = Ext.extend(Ext.form.ComboBox, {
					passName : 'id',
					allowUnLeafClick : true,
					treeHeight : 180,
					store : new Ext.data.SimpleStore({
							fields : [],
							data : [[]]
					}),
					editable : false, // ��ֹ��д��j�빦��
					mode : 'local',
					triggerAction : 'all',
					maxHeight : 500,
					selectedClass : '',
					onSelect : Ext.emptyFn,
					emptyText : '��ѡ��...',
					clearValue : function() {
									if (this.passField) {
										this.passField.value = '';
										}
										this.setRawValue('');
								},
					setPassValue: function(passvalue){
										if (this.passField)
											this.passField.value = passvalue;
								},
					onTreeSelected : function(node) {

								},
					treeClk : function(node, e) {
										if (!node.isLeaf() && !this.allowUnLeafClick) {
											e.stopEvent();// ��Ҷ�ӽڵ��򲻴���
											return;
											}
											this.setValue(node.text);// ����optionֵ
											this.collapse();// ����option�б�
										if (this.passField)
											this.passField.value = node.id;// ����Ľڵ�ID����
											this.fireEvent('treeselected', node);// ѡ����ڵ��Ĵ����¼�
								},
					initComponent : function() {
											Ext.form.ComboBoxTree.superclass.initComponent.call(this);
											this.tree.autoScroll = true;
											this.tree.height = this.treeHeight;
											this.tree.containerScroll = false;
											this.tplId='tree-div';
											// overflow:auto"
											this.tpl = '<div id="' +this.tplId+'" style="' + this.treeHeight
														+ '";overflow:hidden;"></div>';
											this.addEvents('treeselected');
											// this.on('treeselected',this.onTreeSelected,this);
									},
					listeners : {
								'expand' : {
									fn : function() {
										if (!this.tree.rendered && this.tplId) {
											this.tree.render(this.tplId);
										}
										this.tree.show();
										},
										single : true
									},
								'render' : {  
									fn : function() {
										this.tree.on('click', this.treeClk, this);
										if (this.passName) {
											this.passField = this.getEl().insertSibling({
														tag : 'input',
														type : 'hidden',
														name : this.passName,
														id : this.passId || Ext.id()
														},
												'before', true)
											}

										this.passField.value = this.passValue !== undefined
										? this.passValue
										: (this.value !== undefined ? this.value : '');
										this.el.dom.removeAttribute('name');
										}
									},
								'beforedestroy' : {
					fn : function(cmp) {
						this.purgeListeners();
						this.tree.purgeListeners();
						}
					}
				}
			});

		Ext.reg('combotree', Ext.form.ComboBoxTree);